package pe.com.bbva.modpre.dominio;

import javax.persistence.*;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

import pe.com.bbva.modpre.dominio.util.AuditoriaBean;


/**
 * The persistent class for the SOL_SITUACION database table.
 * 
 */
@Entity
@Table(name="SOL_SITUACION")
@SuppressWarnings("serial")
public class Situacion extends AuditoriaBean {

	@Id
	@Column(unique=true, nullable=false, precision=16)
	@GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_SITUACION")
	@TableGenerator(name = "SEQ_SITUACION", table = "SEQ_ENTIDAD", pkColumnName = "ENTIDAD", initialValue = 1,
	valueColumnName = "ULTIMO_ID", pkColumnValue = "pe.com.bbva.modpre.dominio.Situacion", allocationSize = 1)
	private Long id;

	@Column(nullable=false, length=20)
	private String codigo;

	@Column(length=200)
	private String descripcion;

	@Column(nullable=false, length=50)
	private String nombre;

	//uni-directional many-to-one association to Valor
	@ManyToOne
	@JoinColumn(name="ESTADO", nullable=false)
	private Valor estado;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Valor getEstado() {
		return estado;
	}

	public void setEstado(Valor estado) {
		this.estado = estado;
	}

	@Override
	public int hashCode() {
		HashCodeBuilder hashCodeBuilder = new HashCodeBuilder(3, 7);
		hashCodeBuilder.append(codigo);
		return hashCodeBuilder.toHashCode();
	}

	@Override
	public boolean equals(Object obj) {
		boolean equals = false;
		if (obj instanceof Situacion) {
			Situacion bean = (Situacion) obj;
			EqualsBuilder equalsBuilder = new EqualsBuilder();
			equalsBuilder.append(codigo, bean.codigo);
			equals = equalsBuilder.isEquals();
		}
		return equals;
	}
	
	public static abstract class CODIGO
	{
		public final static String PRE_REGISTRO = "PRE_REG";
		public final static String SOLICITADO = "SOL";
		public final static String DICTAMINADO = "DIC";
		public final static String OBSERVADO = "OBS";
		public final static String RECONSIDERADO = "REC";
		public final static String SUBSANADO = "SUB";
		public final static String CONCRETADO = "CON";
		public final static String NO_CONCRETADO = "NO_CON";
		public final static String ELEVADO = "ELE";
		public final static String EXPIRADO = "EXP";
		public final static String CANCELADO = "CAN";
		public final static String DESEMBOLSADO = "DES";
	}
	
}